package com.thaiopensource.validate.prop.rng;

import org.relaxng.datatype.DatatypeLibraryFactory;

import com.thaiopensource.util.PropertyId;
import com.thaiopensource.validate.FlagOption;
import com.thaiopensource.validate.FlagPropertyId;
import com.thaiopensource.validate.Option;
import com.thaiopensource.validate.SchemaReader;
import com.thaiopensource.validate.StringPropertyId;

public class RngProperty
{

  private RngProperty ()
  {}

  public static final PropertyId <DatatypeLibraryFactory> DATATYPE_LIBRARY_FACTORY = PropertyId.newInstance ("DATATYPE_LIBRARY_FACTORY",
                                                                                                             DatatypeLibraryFactory.class);
  public static final FlagPropertyId CHECK_ID_IDREF = new FlagPropertyId ("CHECK_ID_IDREF");
  public static final FlagPropertyId FEASIBLE = new FlagPropertyId ("FEASIBLE");
  public static final StringPropertyId SIMPLIFIED_SCHEMA = new StringPropertyId ("SIMPLIFIED_SCHEMA");

  public static Option getOption (String uri)
  {
    if (!uri.startsWith (SchemaReader.BASE_URI))
      return null;
    uri = uri.substring (SchemaReader.BASE_URI.length ());
    if (uri.equals ("feasible"))
      return new FlagOption (FEASIBLE);
    if (uri.equals ("check-id-idref"))
      return new FlagOption (CHECK_ID_IDREF);
    return null;
  }
}
